package com.ecology.arr;

import java.util.ArrayList;
import java.util.List;

public class ExamArr {

    /**
     *
     * 最长连续子数组
     * 给定一个由若干 0 和 1 组成的数组以及整数n，
     * 我们最多可以将数组中的n个元素从 0 变成 1或从1变成0
     *
     * @return 返回仅包含 1或0 的最长（连续）子数组的长度
     * 例如：
     * [1,1,1,0,0,0,1,1,1,1,0],2
     * 输出例子：6
     */
    public static int maxLenContinuousArr(int[] arr, int n) {
        int maxLen = 0;
        if (null == arr || arr.length < 1) {
            return maxLen;
        }
        int left = 0;
        int right = 0;
        int len = arr.length;
        int diffCount = 0;
        while (right < len) {
            if (arr[right] == 0) {
                ++diffCount;
            }
            while (diffCount > n) {
                if (arr[left] == 0) {
                    --diffCount;
                }
                ++left;
            }
            maxLen = Math.max(maxLen, right - left + 1);
            ++right;
        }

        return maxLen;

    }
}
